// pages/orderModify/orderModify.js
const app = getApp();
const util = require('../../utils/util');
Page({
  /**
   * 页面的初始数据
   */
  data: {
    /* 用户信息 */
    userInfo_share:{},
    /* 导航 */
    showNavPersonal: false,
    showNavArrow: true,
    /* 由哪个页面进入订单详情 */
    pageFrom:'',
    /* 订单生成时间 */
    orderInsTime:'',
    /* 生成订单提交的参数 */
    orderArgs:{
      appletGrade:'',  //小程序版本，0、免费版，1、基础版，2、标准版
      pro_url:'',  //产品图片
      code:'',  //优惠券码
      contact:'',  //联系人
      coupon_id:'',  //优惠券id
      mobile:'',  //联系电话
      cost_price:'', //原价
      oldPrice:'',  //使用优惠券之前的价格
      price:'',   //金额---提交到后台
      real_price:'', //页面上显示的原金额
      show_price:'', //页面上显示的实际金额
      product_id:'',  //产品id
      remark:'',  //备注
      status:'0',   //支付状态：0、待支付，1、已完成，2、取消订单
      title:'',   //支付标题
      userid:'',   //用户id
      corp_userid:'',  //企业员工id
    },
    /* 订单支付时提交的参数 */
    orderPayArgs:{
      openid:'',  //
      order_id:''  // 订单id
    },
    /* 是否同意开通购买协议 */
    openAgree:false,
    /* 订单id--查询订单详情 */
    order_id:'',
    /*  */
    xieyiSrc:'',
    /*  */
    zfzt:'0',   //订单支付状态--默认未支付
    /* 优惠券码 */
    code:'',
    checkedCoupon:true,  //验证优惠券是否成功
    overPrice:0,//满多少金额
    minusPrice:0, //减去多少金额
    checkingCode:false, //校验优惠券时
    /* 微信支付的参数 */
    paymentArgs:{
      'timeStamp': '',
      'nonceStr': '',
      'package': '',
      'signType': 'MD5',
      'paySign': '',
    },
    /*  */
    remarkLen:100  //买家留言最多输入的字数
  },
  /* 输入优惠券码 */
  changeOrderCode:function(e){
    //
    this.setData({
      'orderArgs.code':e.detail.value
    })
    //
    if(this.data.orderArgs.code.length>=8){
      this.setData({
        checkingCode:true
      });
      this.checkCoupon();
    }else{
      //已有优惠信息
      this.setData({
        checkedCoupon:true,
        'orderArgs.coupon_id':'',
        'orderArgs.price':this.data.orderArgs.oldPrice,
        'orderArgs.real_price':app.globalData.showPrice(this.data.orderArgs.oldPrice),
        'orderArgs.show_price':app.globalData.showPrice(this.data.orderArgs.oldPrice),
        overPrice:'',
        minusPrice:''
      })
    }
  },
  /* 校验优惠券码 */
  checkCoupon:function(){
    //
    wx.showLoading({
      title:'',
      mask:true
    });
    //
    return app.globalData.$http.call(this,{
      api:"/checkCoupon",
      data:{
        corp_userid:app.globalData.visit_userid||this.data.userInfo_share.corpUser.userid, //---202200716新增
        code:this.data.orderArgs.code,   //优惠券码
        price:this.data.orderArgs.price  //产品的价格
      }
    }).then(res=>{
      console.log(res)
      wx.hideLoading();
      this.setData({
        checkingCode:false
      });
      if(res.data.code=='1'){
        let tmpData = res.data.body;
        let finalPrice = (this.data.orderArgs.price*1) - (tmpData.price*1); //最终价格
        if(isNaN(finalPrice)){
          wx.showModal({
            title:'提示',
            content:'使用优惠券之后的商品价格异常--NaN',
            showCancel:false
          });
          this.setData({
            'orderArgs.code':'',
            checkingCode:false
          });
          return Promise.reject('使用优惠券之后的商品价格异常--NaN');
        }
        if(finalPrice<=0){  //最小价格1分钱
          finalPrice = 1;
        }
        this.setData({
          overPrice:app.globalData.showPrice(tmpData.over_price),
          minusPrice:app.globalData.showPrice(tmpData.price),
          'orderArgs.real_price':app.globalData.showPrice(finalPrice),
          'orderArgs.show_price':app.globalData.showPrice(finalPrice), //显示的最终价格
          'orderArgs.price':finalPrice, //最终价格
          'orderArgs.coupon_id':tmpData.coupon_id, //优惠券id
          checkedCoupon:false
        });
        return Promise.resolve()
      }else{
        wx.showModal({
          title:'提示',
          content:''+res.data.msg,
          showCancel:false
        });
        this.setData({
          'orderArgs.code':'',
          checkingCode:false
        });
        return Promise.reject(res.data.msg);
      }
    }).catch(err=>{
      wx.hideLoading();
      this.setData({
        'orderArgs.code':'',
        checkingCode:false
      });
      wx.showModal({
        title:'提示',
        content:'校验优惠券失败',
        showCancel:false
      });
      return Promise.reject('校验优惠券失败');
    })
  },
  /* 协议 */
  goToXieyi(){
    wx.navigateTo({
      url: '/pages/xieyi/xieyi',
    })
  },
  /* 是否开通购买协议 */
  toggleOpenAgree:function(){
    let openAgree = this.data.openAgree;
    this.setData({
      openAgree:!openAgree
    });
  },
  /* 联系人 */
  getContactName:function(e){
    this.setData({
      'orderArgs.contact':e.detail.value
    });
  },
  /* 联系电话 */
  getContactMobile:function(e){
    this.setData({
      'orderArgs.mobile':e.detail.value
    });
  },
  /* 留言备注 */
  getRemark:function(e){
    if(this.data.orderArgs.remark.length <= this.data.remarkLen){
      this.setData({
        'orderArgs.remark':e.detail.value
      });
    }else{
      this.setData({
        'orderArgs.remark':e.detail.value.slice(0,this.data.remarkLen)
      });
    }
  },
  /* 获取订单详情 */
  getOrderInfo:function(){
    return app.globalData.getOrderInfo.call(this,this.data.order_id).then(res=>{
      console.log(res)
      if(res.data.code=='1'){
        //
        let data = res.data.body;
        //
        this.setData({
          orderInsTime:app.globalData.dateFormatYMDHM(data.instime),
          //
          'orderArgs.contact':data.contact,
          'orderArgs.appletGrade':data.products[0].appletGrade, 
          'orderArgs.pro_url':data.products[0].img,
          'orderArgs.cost_price':app.globalData.showPrice(data.products[0].cost_price),
          'orderArgs.price':data.price,
          'orderArgs.real_price':app.globalData.showPrice(data.price),
          'orderArgs.show_price':app.globalData.showPrice(data.price),
          'orderArgs.product_id':data.product_id,
          'orderArgs.code':data.code,  //优惠券码
          'orderArgs.coupon_id':data.coupon_id,   //优惠券id
          'orderArgs.remark':data.remark,
          'orderArgs.title':data.products[0].name,
          'orderArgs.mobile':data.mobile,
          'orderArgs.userid':data.userid,
          zfzt:data.status  //支付状态
        });
        //如果订单有优惠券信息
        if(!app.globalData.isEmptyObj(data.coupon)){
          let tmpData = data.coupon;
          this.setData({
            overPrice:app.globalData.showPrice(tmpData.over_price),
            minusPrice:app.globalData.showPrice(tmpData.price),
            checkedCoupon:false  //显示满减信息
          });
        }
        //
        if(app.globalData.isEmptyObj(data.coupon)&&this.data.zfzt=='0'){
          this.setData({
            checkedCoupon:true
          });
          //
          wx.showModal({
            title:'提示',
            content:'如需使用优惠券，请先取消该订单，重新下单！',
            showCancel:false
          });
        }
        //
      }else{
        wx.showModal({
          title:'提示',
          content:'获取订单详情失败',
          showCancel:false
        });
        return Promise.reject('获取订单详情失败')
      }
    }).catch(err=>{
      wx.showModal({
        title:'提示',
        content:'获取订单详情失败',
        showCancel:false
      });
      return Promise.reject('获取订单详情失败');
    })
  },
  /* 继续支付 */
  orderPayAgain:function(){
    if(!this.data.orderArgs.contact){
      wx.showToast({
        icon:'none',
        title:'请输入联系人'
      });
      return;
    }
    if(!this.data.orderArgs.mobile){
      wx.showToast({
        icon:'none',
        title:'请输入联系电话'
      });
      return;
    }
    //
    if(!this.data.openAgree){
      wx.showToast({
        icon:'none',
        title:'请同意开通使用购买协议'
      });
      return;
    }
    //
    console.log(this.data.orderArgs);
    //
    wx.showModal({
      title:"提示",
      content:'确定要继续支付该订单吗？',
      success:res=>{
        if(res.confirm){   
          //
          wx.showLoading({
            title:"支付中",
            mask:true
          });
          //
          this.setData({
            'orderArgs.order_id':this.data.order_id, //订单id
            'orderArgs.status':'0'   //继续支付
          });
          //
          this.updateOrder().then(()=>{
            //
            this.setData({
              'orderPayArgs.openid':this.data.userInfo_share.openid,
              'orderPayArgs.order_id':this.data.order_id
            });
            return this.orderPay();
          }).then(()=>{
            wx.hideLoading();
            return this.requestPayment();
          }).then(()=>{
            //已支付
            this.setData({
              zfzt:'1'
            });
            //支付成功->跳转到提示页
            wx.navigateTo({
              url: '/pages/paySuccess/paySuccess',
              success:res=>{
                res.eventChannel.emit('fromOMPage',{
                  order_id:this.data.orderPayArgs.order_id
                });
              }
            });
          }).catch(err=>{
            wx.hideLoading();
            wx.showModal({
              title:'提示',
              content:''+err,
              showCancel:false
            });
          });
        }
      }
    });
  },
  /* 取消支付 */
  cancelOrderPay:function(){
    wx.showModal({
      title:"提示",
      content:'确定要取消该订单吗？',
      success:res=>{
        if(res.confirm){   
          //
          wx.showLoading({
            title:"取消订单",
            mask:true
          });
          //
          this.setData({
            'orderArgs.order_id':this.data.order_id, //订单id
            'orderArgs.status':'2'   //取消订单
          });
          //
          this.updateOrder().then(()=>{
            //
            return this.getOrderInfo();
          }).then(()=>{
            wx.hideLoading();
          }).catch(err=>{
            wx.hideLoading();
            wx.showModal({
              title:'提示',
              content:''+err,
              showCancel:false
            })
          });
        }
      }
    });
  },
  /* 修改订单 */
  updateOrder:function(){
    return app.globalData.$http.call(this,{
      api:"/updateOrder",
      data:this.data.orderArgs
    }).then(res=>{
      console.log(res)
      if(res.data.code=='1'){
        return Promise.resolve()
      }else{
        return Promise.reject(res.data.msg);
      }
    }).catch(err=>{
      return Promise.reject('修改订单失败');
    });
  },
  /* 支付 */
  goToPayOrder:function(){
    if(!this.data.orderArgs.contact){
      wx.showToast({
        icon:'none',
        title:'请输入联系人'
      });
      return;
    }
    //联系人
    if(!app.globalData.nameRegx().test(this.data.orderArgs.contact)){
      wx.showToast({
        icon:'none',
        title:'请输入正确的联系人姓名(中文不包含空格)'
      });
      return;
    }
    if(!this.data.orderArgs.mobile){
      wx.showToast({
        icon:'none',
        title:'请输入联系电话'
      });
      return;
    }
    //联系电话
    if(!app.globalData.phoneNumberRegx().test(this.data.orderArgs.mobile)){
      wx.showToast({
        icon:'none',
        title:'请输入正确的11位联系电话'
      });
      return;
    }
    //
    if(!this.data.openAgree){
      wx.showToast({
        icon:'none',
        title:'请同意开通使用购买协议'
      });
      return;
    }
    //没使用优惠券
    if(!this.data.orderArgs.coupon_id){
      this.setData({
        'orderArgs.code':''
      });
    }
    //
    console.log(this.data.orderArgs);
    //return;
    //
    wx.showLoading({
      title: '支付中...',
      mask:true
    });
    //
    this.insertOrder().then(()=>{
      return this.orderPay();
    }).then(()=>{
      wx.hideLoading();
      return this.requestPayment();
    }).then(()=>{
      wx.hideLoading();
      //支付成功->跳转到提示页
      wx.navigateTo({
        url: '/pages/paySuccess/paySuccess',
        success:res=>{
          res.eventChannel.emit('fromOMPage',{
            order_id:this.data.orderPayArgs.order_id
          });
        }
      })
    }).catch(err=>{
      wx.hideLoading();
      wx.showModal({
        title:'提示',
        content:err+'',
        showCancel:false,
        confirmColor:app.globalData.modalConfirmColor,
        success:res=>{
          if(res.confirm){
            //订单支付失败
            if(app.globalData.orderPayFail){
              app.globalData.orderPayFail = false;
              app.globalData.fromOMPayFailToEmployee = true;
              //跳转到个人中心页面
              switch(this.data.userInfo_share.state){
                case '0':  //客户
                  wx.navigateTo({
                    url: '/pages/personal/personal',
                  })
                  break;
                case '1':  //员工
                  wx.navigateTo({
                    url: '/pages/employee/employee',
                  })
                  break;
              }
            }
          }
        }
      });
    });
  },
  /* 小程序微信支付 */
  requestPayment:function(){
    return new Promise((resolve,reject)=>{
      wx.requestPayment({
        'timeStamp': this.data.paymentArgs.timeStamp,
        'nonceStr': this.data.paymentArgs.nonceStr,
        'package': this.data.paymentArgs.package,
        'signType': 'MD5',
        'paySign': this.data.paymentArgs.paySign,
        'success':res=>{
          console.log(res);
          resolve();
        },
        'fail':res=>{
          console.log(res);
          //支付失败
          app.globalData.orderPayFail = true
          reject('订单支付失败');
        },
        'complete':res=>{

        }
      })
    });
  },
  /* 订单支付 */
  orderPay:function(){
    return app.globalData.$http.call(this,{
      api:"/orderPay",
      data:this.data.orderPayArgs
    }).then(res=>{
      console.log(res)
      if(res.data.code=='1'){
        let tmpData = res.data.body;
        //
        this.setData({
          'paymentArgs.timeStamp':tmpData.timeStamp,  //
          'paymentArgs.nonceStr':tmpData.nonce_str,  //
          'paymentArgs.package':'prepay_id='+tmpData.prepay_id,
          'paymentArgs.paySign':tmpData.paySign,
        });
        //
        return Promise.resolve()
      }else{
        return Promise.reject(res.data.msg);
      }
    }).catch(err=>{
      return Promise.reject('生成订单失败');
    });
  },
  /* 添加订单 */
  insertOrder:function(){
    return app.globalData.$http.call(this,{
      api:"/insertOrder",
      data:this.data.orderArgs
    }).then(res=>{
      console.log(res)
      if(res.data.code=='1'){
        let tmpData = res.data.body;
        //
        this.setData({
          'orderPayArgs.openid':this.data.userInfo_share.openid,
          'orderPayArgs.order_id':tmpData.order_id
        });
        //
        return Promise.resolve()
      }else{
        return Promise.reject(res.data.msg);
      }
    }).catch(err=>{
      return Promise.reject('生成订单失败');
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    //获取用户信息
    this.setData({
      userInfo_share:app.globalData.get_userInfo(),
      xieyiSrc:app.globalData.Url+'/xieyi'
    });
    //客户or员工
    if(this.data.userInfo_share.state=='0'){
      this.setData({
        'orderArgs.corp_userid':app.globalData.visit_userid
      });
    }else{
      this.setData({
        'orderArgs.corp_userid':this.data.userInfo_share.corpUser.userid
      });
    }
    //------------
    let eventChannel = this.getOpenerEventChannel();
    //console.log(eventChannel);
    //从产品页跳转来
    eventChannel.on('fromProductPageForOrder',data=>{
      //
      console.log(data);
      //
      this.setData({
        'orderArgs.appletGrade':data.info.appletGrade, 
        'orderArgs.pro_url':data.info.pro_url,
        'orderArgs.cost_price':app.globalData.showPrice(data.info.cost_price),
        'orderArgs.oldPrice':data.info.price,
        'orderArgs.price':data.info.price,
        'orderArgs.real_price':app.globalData.showPrice(data.info.price),
        'orderArgs.show_price':app.globalData.showPrice(data.info.price),
        'orderArgs.product_id':data.info.product_id,
        'orderArgs.title':data.info.titlte,
        'orderArgs.mobile':this.data.userInfo_share.mobile,
        'orderArgs.userid':this.data.userInfo_share.userid,
        //
        pageFrom:data.info.pageFrom
      });
      //设置订单时间
      if(this.data.pageFrom==='selectpro'){
        this.setData({
          orderInsTime:app.globalData.dateObjFormatYMDHM(new Date())
        })
      }
    });
    //从个人中心跳转来--非企业员工 
    eventChannel.on('fromPersonPageForOrder',data=>{
      //console.log('fromPersonPageForOrder');
      //
      this.setData({
        pageFrom:data.pageFrom,
        openAgree:true,
        order_id:data.order_id
      });
      //获取订单详情
      wx.showLoading({
        title:'',
        mask:true
      });
      this.getOrderInfo().then(()=>{
        wx.hideLoading();
      }).catch(err=>{
        wx.hideLoading();
      });
      //
    });
    //从员工通道跳转来--企业员工
    eventChannel.on('fromEmployeePage',data=>{
      //console.log(data);
      this.setData({
        pageFrom:data.pageFrom,
        openAgree:true,
        order_id:data.order_id
      });
      //获取订单详情
      wx.showLoading({
        title:'',
        mask:true
      });
      this.getOrderInfo().then(()=>{
        wx.hideLoading();
      }).catch(err=>{
        wx.hideLoading();
      });
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    const pages = getCurrentPages();
    if(pages[pages.length - 1].route==='pages/orderModify/orderModify'){
      app.globalData.fromOMToEmployee = true
      app.globalData.fromOMToPersonal = true
    }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  }
})